home *** CD-ROM | disk | FTP | other *** search
- /*
- File: Example2.c
- Contains: Compression of PICT Files
- Written by: DTS and QT Engineering
- Copyright: © 1992-1994 by Apple Computer, Inc., all rights reserved.
- Change History (most recent first):
- <1> 12/4/94 khs changed the format of the file to the new look and feel
- To Do:
- */
-
- // The following sample code is similar to the previous example except
- // that it requests files to compress until the user cancels and shows
- // a slightly different use of the Standard Compression Dialog calls.
- //
- // This example is not a description of the "right" way to use these
- // calls in an application. It should be used for comparison with the
- // other examples. Example 3 is a better example of the "right" way to
- // do things.
-
-
- // INCLUDE FILES
- #include <menus.h>
- #include <fonts.h>
- #include <osevents.h>
- #include <components.h>
- #include <quicktimecomponents.h>
-
-
- // FUNCTION PROTOTYPES
- void Example2(void);
-
-
- // FUNCTIONS
- void Example2(void)
- {
- ComponentResult result;
- Point where;
- ComponentInstance ci;
- short sref;
- SFTypeList typeList;
- SFReply reply;
-
- // Open the Standard Compression Dialog component.
-
- ci = OpenDefaultComponent(StandardCompressionType, StandardCompressionSubType);
- if (ci)
- {
-
- // Tell SFGetFilePreview to center on the best monitor.
-
- where.h = where.v = -2;
-
- // Show only 'PICT' files in the file list.
-
- typeList[0] = 'PICT';
-
- // Keep asking the user for files until they cancel.
-
- reply.good = true;
- while (reply.good)
- {
-
- // Ask user to select PICT file to be compressed.
-
- SFGetFilePreview(where, "\p", nil, 1, typeList, nil, &reply);
- if (reply.good)
- {
-
- // If they selected a file, open that file.
-
- result = FSOpen(reply.fName, reply.vRefNum, &sref);
- if (!result)
- {
-
- // If the file opened successfully, set the picture file to
- // be the test image shown in the dialog. Passing nil for srcRect
- // means use the entire image. Passing 0 for testFlags means
- // to use the default system method of displaying the test image
- // which is currently a combination of cropping and scaling.
-
- SCSetTestImagePictFile(ci, sref, nil, 0);
-
- // Because we may have already made default settings in a previous
- // pass through this loop, we need to set defaults specific to the
- // current picture file. This is particularly important because
- // defaults for the previous picture may include a color table
- // that is not appropriate for the current picture.
- //
- // There is a drawback to this approach. If the user wants to use
- // settings different from the defaults for several pictures, they
- // have to change the settings each time the compression dialog comes
- // up. The next example will show a better way of handling this problem
- // using the custom button.
-
- result = SCDefaultPictFileSettings(ci, sref, false);
- if (!result)
- {
-
- // Now that we know there are current defaults settings, we must
- // explicitly request settings from the user. In the previous
- // example, SCCompressPictureFile requested settings from the user
- // for us because no default settings had been made.
- //
- // Note that the result code returned could include scUserCancelled.
-
- result = SCRequestImageSettings(ci);
- if (!result)
- {
-
- // Compress the picture file with the settings chosen by the user.
- // The settings include any custom color table found in the source
- // picture if still appropriate for the depth chosen by the user.
- //
- // Again note that we are able to pass the source file ref for both the
- // source and destination picture files. In this case, the picture
- // file will be compressed in place. It would probably be better to
- // ask the user for a name to save the compressed file as, rather than
- // compressing it in place.
-
- result = SCCompressPictureFile(ci, sref, sref);
-
- // Another implementation would be to clear out the current settings
- // by calling SCSetInfo(ci,scSettingsStateType,nil) after calling
- // SCSetTestImagePictfile. We would then no longer need the calls
- // to SCDefaultPictFileSettings and SCRequestImageSettings because
- // SCCompressPictureFile would do that for us as it did in the first example.
- }
- }
-
- // Close the source picture file.
-
- FSClose(sref);
- }
- }
- }
-
- // Close the Standard Compression Dialog component.
-
- CloseComponent(ci);
- }
- }
-
-
- // MAIN FUNCTION
- void main(void)
- {
- InitGraf(&qd.thePort);
- InitFonts();
- FlushEvents(everyEvent, 0);
- InitWindows();
- InitMenus();
- InitDialogs(nil);
- InitCursor();
- MaxApplZone();
-
- Example2();
- }
-
-
-